#ifndef SLE_UUID_SERVER_H
#define SLE_UUID_SERVER_H

#include "sle_ssap_server.h"

/*设备ID与服务ID，后者是前者的子集。所有设备的设备ID不应重复，仅需注意这一点即可，我们没有在client方用uuid进行
server的辨认，它在server方这里也仅仅是开启服务时用了一下*/
#define SLE_UUID_SERVER_SERVICE_LED    0xABCD
#define SLE_UUID_SERVER_NTF_REPORT     0x1122

/* Property Property */
#define SLE_UUID_TEST_PROPERTIES  (SSAP_PERMISSION_READ | SSAP_PERMISSION_WRITE)

/* Descriptor Property */
#define SLE_UUID_TEST_DESCRIPTOR   (SSAP_PERMISSION_READ | SSAP_PERMISSION_WRITE)

extern uint8_t len;

/**
 * @brief  SLE UUID服务器初始化。
 * @attention  NULL
 * @retval ERRCODE_SLE_SUCCESS    执行成功
 * @retval ERRCODE_SLE_FAIL       执行失败
 * @par 依赖:
 * @li sle_ssap_server.h
 * @endif
 */
errcode_t sle_uuid_server_init(void);

/**
 * @brief  通过uuid server 发送数据给对端。
 * @attention  NULL
 * @retval ERRCODE_SLE_SUCCESS    执行成功
 * @retval ERRCODE_SLE_FAIL       执行失败
 * @par 依赖:
 * @li sle_ssap_server.h
 * @endif
 */
errcode_t sle_uuid_server_send_report_by_uuid(const uint8_t *data, uint16_t len);

/**
 * @brief  通过uuid server 发送数据给对端。
 * @attention  NULL
 * @retval ERRCODE_SLE_SUCCESS    执行成功
 * @retval ERRCODE_SLE_FAIL       执行失败
 * @par 依赖:
 * @li sle_ssap_server.h
 * @endif
 */
errcode_t sle_uuid_server_send_report_by_handle(const uint8_t *data, uint8_t len);

void sle_conn_register_cbks(void);
void sle_ssaps_register_cbks(void);
errcode_t sle_uuid_server_add(void);

/**
 * @brief  下面这个原本是静态函数，是不能被声明的，把它放到这里是为了发挥.h文件“目录”的作用，在此指出这个重要的函数
 *         以方便后续的编程。它是回调函数，一旦接收到消息就会触发。如果需要自动对送来的消息进行反应就修改这个函数的
 *         定义吧
 * @param  server_id、conn_id：本机ID和连接ID。目前目前只支持注册一个SSAP server，也只能连接一个客户端，所以这两
 *                             个基本是常参数
 * @param  write_cb_para：接收过来的数据。其成员定义参见sle_ssap_server.h中第124行的ssaps_req_write_cb_t结构体
 * @param  status：这个就没什么好说了，错误码嘛，可以选择处理一下
 * @retval NULL
 * @par 依赖:
 * @li sle_ssap_server.h
 * @endif
 */
// static void ssaps_write_request_cbk(uint8_t server_id, uint16_t conn_id, ssaps_req_write_cb_t *write_cb_para,
//     errcode_t status)

/**
 * @brief  通过句柄将消息发送到对端。
 * @param  data：消息
 * @param  len：长度
 * @retval NULL
 * @par 依赖:
 * @li sle_ssap_server.h
 * @endif
 */
errcode_t sle_uart_server_send_report_by_handle(const uint8_t *data, uint16_t len);

#endif
